import { useBaseApi } from '/@/api/base'
import { INVENTORY_API_CONFIG } from './config'

// 库存查询接口服务
export const useInventoryQueryApi = () => {
  const baseApi = useBaseApi("inventoryQuery")
  return {
    // 分页查询库存信息
    page: baseApi.page,
    // 获取库存统计信息
    getStats: (params: any) => baseApi.request({
      url: baseApi.baseUrl + INVENTORY_API_CONFIG.ENDPOINTS.GET_STATS,
      method: 'POST',
      data: params
    }),
    // 导出库存数据
    exportData: baseApi.exportData,
    // 获取出入库流水
    getStockFlow: (params: any) => baseApi.request({
      url: baseApi.baseUrl + INVENTORY_API_CONFIG.ENDPOINTS.GET_STOCK_FLOW,
      method: 'POST',
      data: params
    }),
    // 获取库存分布
    getStockDistribution: (params: any) => baseApi.request({
      url: baseApi.baseUrl + INVENTORY_API_CONFIG.ENDPOINTS.GET_STOCK_DISTRIBUTION,
      method: 'POST',
      data: params
    }),
    // 获取货品类型列表
    getGoodsTypes: () => baseApi.request({
      url: baseApi.baseUrl + INVENTORY_API_CONFIG.ENDPOINTS.GET_GOODS_TYPES,
      method: 'GET'
    }),
    // 获取单位列表
    getUnits: () => baseApi.request({
      url: baseApi.baseUrl + INVENTORY_API_CONFIG.ENDPOINTS.GET_UNITS,
      method: 'GET'
    }),
    // 获取仓库列表
    getWarehouses: () => baseApi.request({
      url: baseApi.baseUrl + INVENTORY_API_CONFIG.ENDPOINTS.GET_WAREHOUSES,
      method: 'GET'
    }),
    // 导出出入库流水数据
    exportStockFlow: (params: any) => baseApi.request({
      url: baseApi.baseUrl + INVENTORY_API_CONFIG.ENDPOINTS.EXPORT_STOCK_FLOW,
      method: 'POST',
      data: params,
      responseType: 'blob'
    }),
    // 导出库存分布数据
    exportStockDistribution: (params: any) => baseApi.request({
      url: baseApi.baseUrl + INVENTORY_API_CONFIG.ENDPOINTS.EXPORT_STOCK_DISTRIBUTION,
      method: 'POST',
      data: params,
      responseType: 'blob'
    }),
    // 获取库存分布数据
    getStockDistribution: (params: any) => baseApi.request({
      url: baseApi.baseUrl + INVENTORY_API_CONFIG.ENDPOINTS.GET_STOCK_DISTRIBUTION,
      method: 'POST',
      data: params
    })
  }
}

// 库存查询实体
export interface InventoryQuery {
  // 主键Id
  id: number
  // 货品编号
  goodsCode: string
  // 货品名称
  goodsName: string
  // 货品状态
  status: string
  // 货品类型
  goodsType: string
  // 规格型号
  specs: string
  // 单位
  unit: string
  // 条码
  barcode: string
  // 仓库名称
  warehouseName: string
  // 库位名称
  locationName: string
  // 当前库存
  currentStock: number
  // 库存金额
  stockAmount: number
  // 待入库
  pendingInbound: number
  // 待出库
  pendingOutbound: number
  // 可用库存
  availableStock: number
  // 可用库存金额
  availableStockAmount: number
  // 期初库存
  beginningStock: number
  // 期末库存
  endingStock: number
  // 创建时间
  createTime: string
  // 更新时间
  updateTime: string
}

// 库存统计信息
export interface InventoryStats {
  // 当前库存数量
  currentQuantity: number
  // 当前库存金额
  currentAmount: number
  // 入库数量
  inboundQuantity: number
  // 出库数量
  outboundQuantity: number
  // 待入库
  pendingInbound: number
  // 待出库
  pendingOutbound: number
}

// 出入库流水
export interface StockFlow {
  // 主键Id
  id: number
  // 单据号
  documentCode: string
  // 单据类型
  documentType: string
  // 货品编号
  goodsCode: string
  // 货品名称
  goodsName: string
  // 仓库名称
  warehouseName: string
  // 库位名称
  locationName: string
  // 数量
  quantity: number
  // 单价
  unitPrice: number
  // 金额
  amount: number
  // 操作时间
  operationTime: string
  // 操作人
  operator: string
  // 备注
  remark: string
}

// 库存分布
export interface StockDistribution {
  // 主键Id
  id: number
  // 货品编号
  goodsCode: string
  // 货品名称
  goodsName: string
  // 仓库名称
  warehouseName: string
  // 库位名称
  locationName: string
  // 库存数量
  stockQuantity: number
  // 库存金额
  stockAmount: number
  // 可用数量
  availableQuantity: number
  // 锁定数量
  lockedQuantity: number
}
